JavaScript 56.7%
TypeScript 42.6%
1import { NextRequest, NextResponse } from "next/server";2import { prisma } from "@/lib/prisma";3import { loadFileData, loadVersionData } from "@/lib/storage";45export async function GET(6 request: NextRequest,7 { params }: { params: { id: string; versionId: string } }8) {9 const file = await prisma.file.findUnique({ where: { id: params.id } });10 const version = await prisma.fileVersion.findUnique({11 where: { id: params.versionId },12 });1314 if (!file || !version || version.fileId !== params.id) {15 return NextResponse.json({ error: "Not found" }, { status: 404 });16 }1718 // Only text files can be diffed19 if (!file.mimeType.startsWith("text/") && !file.mimeType.includes("json") && !file.mimeType.includes("xml") && !file.mimeType.includes("javascript") && !file.mimeType.includes("typescript")) {20 return NextResponse.json({ error: "Not a text file" }, { status: 400 });21 }2223 const currentContent = (await loadFileData(file.storagePath, file.isEncrypted)).toString("utf-8");24 const versionContent = (await loadVersionData(version.storagePath, file.isEncrypted)).toString("utf-8");2526 const Diff = await import("diff");27 const patch = Diff.createPatch(28 file.name,29 versionContent,30 currentContent,31 `Version ${version.versionNum}`,32 "Current"33 );3435 return NextResponse.json({36 current: currentContent,37 version: versionContent,38 diff: patch,39 });40}41